package cn.lagou.part01

/**
 * 每瓶啤酒2元，3个空酒瓶或者5个瓶盖可换1瓶啤酒。
 * 100元最多可喝多少瓶啤酒？
 * 思路：利用递归算法，一次性买完
 * 然后递归算出瓶盖和空瓶能换的啤酒数
 */
object HundredBeer {

  def beer(sumBeers:Int,bottle:Int,cap:Int):Int ={
    println(s"啤酒总数：$sumBeers,剩余空瓶子：$bottle,剩余啤酒盖：$cap")
    //递归算法
    if(bottle < 3 && cap < 5) return sumBeers
    //现有空瓶子兑换的啤酒数
    val b1 = bottle / 3
    //空瓶子兑换后剩余的空瓶子
    val b2 = bottle % 3
    //现有啤酒盖兑换的啤酒数
    val c1 = cap / 5
    //啤酒盖兑换后，剩余的啤酒盖
    val c2 = cap % 5
    beer(b1 + c1 +sumBeers,b1 + c1 + b2,b1 +c1 +c2)

  }
  def main(args: Array[String]): Unit = {
    //由于每瓶酒2元，可以初始化啤酒总数
    var sumBeers: Int = 100 /2
    //初始化空瓶子数=啤酒盖数=啤酒总数
    var bottle, cap : Int = sumBeers
    //通过递归算法算出喝到的啤酒总数
    val beers = beer(sumBeers, bottle, cap)
    println(s"100元最多可以喝$beers 瓶啤酒")
  }
}
